home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 3 / Amiga Tools 3.iso / audio / deliay014 / dev / src / aydebugger.s < prev    next >
Text File  |  1994-10-10  |  13KB  |  628 lines

  1.  
  2. *    PlayAY Debugger, (C) 1994 Patrik Rak - Raxoft
  3.  
  4. *    WARNING: This program has not been optimized... So do not try to learn
  5. ;    how to "code" from this source... On the other hand, the GUI methods
  6. ;    presented here can help you...
  7.  
  8. ;    Compile, save as binary from b to e and load as MODULE (not player!)
  9. ;    to your DT2. Of course, PlayAY must be running...
  10.  
  11. *    1.0 - 12.9.1994
  12. ;    Initial release. Env stuff not implemented yet.
  13.  
  14. DEBUG_VERSION    EQU    0
  15.  
  16.     incdir    Include40/
  17.     include    libraries/gadtools.i
  18.     include    exec/exec_lib.i
  19.     include    dos/dos_lib.i
  20.     include    dos/dos.i
  21.     include    dos/dostags.i
  22.     include    intuition/intuition_lib.i
  23.     include    libraries/gadtools_lib.i
  24.     include    misc/AYPlayer.i
  25.     include    misc/mine.i
  26.     incdir    ''
  27. b
  28.  
  29. ;    nop            ;Bug in asmone workaround...
  30.     IFNE    DEBUG_VERSION
  31.     bsr    Relocate
  32.     bra.w    EntryPoint
  33.     ENDC
  34.  
  35.     AYMODHEADER    TEST,0,0
  36.     dc.w    player-8-*    ;This "module" contains internal "AY player"
  37.     dc.w    creator-*
  38.     dc.w    misc-*
  39.     dc.b    1-1        ;how many songs
  40.     dc.b    0        ;which should start first
  41.     dc.w    songdata-*
  42.  
  43. songdata    dc.w    name-*
  44.     ;dc.w    0    ;we can ommit this - no song to be played really...
  45.  
  46. player    ;ds.b    8    ;we omit these too
  47.     dc.l    AYM_TEST
  48.     dc.b    1,0
  49.     dc.b    PLAYAY_RELEASE_VERSION
  50.  
  51.     dc.b    0    ;transpose
  52. AYbase    ds.l    1
  53. AYass    ds.l    1
  54. AYfreq    ds.l    1
  55.     dc.w    initplayer-*
  56.     dc.w    endplayer-*
  57.     dc.w    initsound-*
  58.     dc.w    endsound-*
  59.     dc.w    interrupt-*
  60.     dc.w    nextpattern-*
  61.     dc.w    prevpattern-*
  62. name    dc.b    'PlayAY Debugger 1.0',0
  63. creator    dc.b    '(C) 1994 Patrik Rak - Raxoft',0
  64.     dc.b    0        ;no conversion
  65. misc    dc.b    'Used for AY-3-8912 emulation testing',0
  66.  
  67. ;------------------------- Texts ----------------------
  68.  
  69. dosn    dc.b    'dos.library',0
  70. intn    dc.b    'intuition.library',0
  71. gtn    dc.b    'gadtools.library',0
  72. topazn    dc.b    'topaz.font',0
  73.  
  74. txtT    dc.b    'T',0
  75. txtN    dc.b    'N',0
  76. txtE    dc.b    'E',0
  77.  
  78. txtFreq    dc.b    'Freq',0
  79. txtVol    dc.b    'Vol',0
  80. txtNoise    dc.b    'Noise',0
  81. txtEnv    dc.b    'Env',0
  82. txtEnvType    dc.b    'Type',0
  83. txtEnvLoop    dc.b    'L',0
  84.  
  85. txtSquare    dc.b    'Square',0
  86. txtSaw        dc.b    'Saw',0
  87.     even
  88.  
  89. ;--------------------- AY player routines --------------------
  90.  
  91. initplayer
  92.     bsr.b    Relocate
  93.     bsr.b    StartGUI
  94.     move.l    d2,d0        ;signal error
  95.     rts
  96.     
  97. endplayer
  98.     bsr.b    StopGUI
  99. ;    rts
  100.  
  101. initsound
  102. ;    rts
  103.  
  104. endsound
  105.     rts
  106.  
  107. interrupt
  108.     lea    AY_Registers(pc),a0
  109.     move.l    AYbase(pc),a1
  110.     moveq    #14/2-1,d0
  111. .loop    move.w    (a0)+,(a1)+
  112.     dbra    d0,.loop
  113.     moveq    #0,d0
  114. ;    rts
  115.  
  116. nextpattern
  117. ;    rts
  118. prevpattern
  119.     rts
  120.  
  121. ;------------------------- GUI Routines ---------------------
  122.  
  123. Relocate    lea    b(pc),a5
  124.     tst.b    relocated-b(a5)
  125.     bne.b    .rts
  126.     lea    reloc(pc),a0
  127. .loop    move.l    a0,a1
  128.     move.w    (a0)+,d0
  129.     beq.b    .exit
  130.     add.w    d0,a1
  131.     move.l    a1,d0
  132.     add.l    d0,(a1)
  133.     bra.b    .loop
  134. .exit    st    relocated-b(a5)
  135. .rts    rts
  136.  
  137. StartGUI
  138.     exec    a6
  139.     lea    b(pc),a5
  140.     tst.l    proc-b(a5)
  141.     bne.b    .failed
  142.     lea    dosn(pc),a1
  143.     moveq    #37,d0
  144.     jsrlib    OpenLibrary
  145.     tst.l    d0
  146.     beq.b    .failed
  147.     move.l    d0,a6
  148.     lea    TagProc(pc),a0
  149.     move.l    a0,d1
  150.     jsrlib    CreateNewProc
  151.     moveq    #-1,d2
  152.     move.l    d0,proc-b(a5)
  153.     beq.b    .error
  154.     moveq    #0,d2
  155. .error    move.l    a6,a1
  156.     exec    a6
  157.     jsrlib    CloseLibrary
  158. .failed    rts
  159.  
  160. StopGUI
  161.     move.l    proc(pc),d0
  162.     beq.b    .failed
  163.     move.l    d0,a1
  164.     move.l    #SIGBREAKF_CTRL_C,d0
  165.     exec    a6
  166.     jsrlib    Signal
  167. .active    move.l    proc(pc),d0        ;bleurgh!!! Active waiting!!!
  168.     bne.b    .active    
  169. .failed    rts
  170.  
  171. EntryPoint
  172.     bsr.b    OpenGUI
  173. .loop    moveq    #-1,d0        ;Not very nice...
  174.     exec    a6
  175.     jsrlib    Wait
  176.     btst    #SIGBREAKB_CTRL_C,d0
  177.     bne.b    .exitus
  178.     bsr.w    ProcessGUI
  179.     bra.b    .loop
  180. .exitus    jsrlib    Forbid
  181.     bsr.w    ProcessGUI    ;flush all Imsgs
  182.     bsr.w    CloseGUI
  183.     clr.l    proc-b(a5)
  184.     rts
  185.     
  186. OpenGUI    lea    b(pc),a5
  187.     exec    a6
  188.     lea    intn(pc),a1
  189.     moveq    #37,d0
  190.     jsrlib    OpenLibrary
  191.     move.l    d0,intb-b(a5)
  192.     beq.w    .rts
  193.     lea    gtn(pc),a1
  194.     moveq    #37,d0
  195.     jsrlib    OpenLibrary
  196.     move.l    d0,gtb-b(a5)
  197.     beq.w    .rts
  198.     move.l    intb(pc),a6
  199.     sub.l    a0,a0        ;workbench
  200.     jsrlib    LockPubScreen
  201.     move.l    d0,scr-b(a5)
  202.     beq.w    .rts
  203.     move.l    d0,a0
  204.     moveq    #0,d6
  205.     move.b    sc_WBorLeft(a0),d6    ;left offset
  206.     move.l    sc_Font(a0),a1
  207.     moveq    #0,d7
  208.     move.b    sc_WBorTop(a0),d7
  209.     add.w    ta_YSize(a1),d7
  210.     addq.w    #1,d7            ;top offset
  211.     lea    TagDone(pc),a1
  212.     move.l    gtb(pc),a6
  213.     jsrlib    GetVisualInfoA
  214.     move.l    d0,vi-b(a5)
  215.     beq.b    .unlock
  216.     lea    glist(pc),a0
  217.     jsrlib    CreateContext
  218.     tst.l    d0
  219.     beq.b    .unlock
  220.     move.l    d0,a0    ;context
  221.     lea    gadgets(pc),a3
  222.     lea    gtable(pc),a4
  223. .loop    lea    NewGad(pc),a1
  224.     moveq    #0,d0
  225.     move.b    (a4)+,d0    ;kind
  226.     beq.b    .finito
  227.     move.b    (a4)+,gng_Flags+3(a1)    ;flags
  228.     move.w    (a4)+,(a1)    ;left
  229.     add.w    d6,(a1)+
  230.     move.w    (a4)+,(a1)    ;top
  231.     add.w    d7,(a1)+
  232.     move.l    (a4)+,(a1)+    ;width & height
  233.     move.l    a4,a2        ;text
  234.     add.w    (a4)+,a2
  235.     move.l    a2,(a1)
  236.     lea    NewGad(pc),a1
  237.     move.l    a4,a2        ;userdata
  238.     add.w    (a4)+,a2
  239.     move.l    a2,gng_UserData(a1)
  240.     move.l    a4,a2
  241.     add.w    (a4)+,a2        ;taglist
  242.     ;d0 kind, a0 previous, a1 NewGad, a2 taglist
  243.     ;a3 gadgets, a4 gtable, d6 loffset, d7 roffset
  244.     jsrlib    CreateGadgetA
  245.     move.l    d0,a0
  246.     move.l    d0,(a3)+
  247.     bne.b    .loop
  248.     bra.b    .unlock
  249. .finito    add.w    #WindowHeight,d7
  250.     move.w    d7,wh+2-b(a5)
  251.     sub.l    a0,a0
  252.     lea    TagWindow(pc),a1
  253.     move.l    intb(pc),a6
  254.     jsrlib    OpenWindowTagList
  255.     move.l    d0,win-b(a5)
  256.     beq.b    .unlock
  257.     move.l    d0,a0
  258.     sub.l    a1,a1
  259.     move.l    gtb(pc),a6
  260.     jsrlib    GT_RefreshWindow
  261. .unlock    move.l    intb(pc),a6
  262.     move.l    scr(pc),a1
  263.     jsrlib    UnlockPubScreen
  264. .rts    rts
  265.  
  266. CloseGUI
  267.     lea    b(pc),a5
  268.     move.l    win(pc),d0
  269.     beq.b    .nowin
  270.     move.l    d0,a0
  271.     move.l    intb(pc),a6
  272.     jsrlib    CloseWindow
  273.     clr.l    win-b(a5)
  274. .nowin    move.l    gtb(pc),a6
  275.     move.l    glist(pc),d0
  276.     beq.b    .nogad
  277.     move.l    d0,a0
  278.     jsrlib    FreeGadgets
  279.     clr.l    glist-b(a5)
  280. .nogad    move.l    vi(pc),d0
  281.     beq.b    .novi
  282.     move.l    d0,a0
  283.     jsrlib    FreeVisualInfo
  284.     clr.l    vi-b(a5)
  285. .novi    exec    a6
  286.     move.l    gtb(pc),d0
  287.     beq.b    .nogt
  288.     move.l    d0,a1
  289.     jsrlib    CloseLibrary
  290.     clr.l    gtb-b(a5)
  291. .nogt    move.l    intb(pc),d0
  292.     beq.b    .noint
  293.     move.l    d0,a1
  294.     jsrlib    CloseLibrary
  295.     clr.l    intb-b(a5)
  296. .noint    rts
  297.  
  298. ProcessGUI
  299.     lea    b(pc),a5
  300. .loop    move.l    win(pc),d0
  301.     beq.b    .rts
  302.     move.l    d0,a0
  303.     move.l    wd_UserPort(a0),a0
  304.     move.l    gtb(pc),a6
  305.     jsrlib    GT_GetIMsg
  306.     tst.l    d0
  307.     beq.b    .rts
  308.     move.l    d0,a2
  309.     moveq    #IDCMP_GADGETUP!IDCMP_GADGETDOWN!IDCMP_MOUSEMOVE,d0
  310.     and.w    im_Class+2(a2),d0    ;faster
  311.     beq.b    .done
  312.     move.l    im_IAddress(a2),a3    ;gadget
  313.     move.l    gg_UserData(a3),d1
  314.     beq.b    .done
  315.     move.l    d1,a0
  316.     move.w    im_Code(a2),d0        ;note that d0 upper word is 0
  317.     move.l    gg_SpecialInfo(a3),a4
  318.     jsr    (a0)    ;a2 message, a3 gadget, a4 special info, d0 im_Code
  319. .done    move.l    a2,a1
  320.     jsrlib    GT_ReplyIMsg
  321.     bra.b    .loop
  322. .rts    rts
  323.  
  324.  
  325. ;a4 Special info, d1 maximum d2 slider nr, d3 integer nr
  326.  
  327. SetPair
  328.     cmp.l    d0,d1
  329.     bcs.b    .toobig
  330.     move.l    d0,d1
  331. .toobig    btst    #4,im_Class+3(a2)    ;IDCMP_MOUSEMOVE
  332.     bne.b    .notnow
  333.     move.l    #GTSL_Level,d0
  334.     bsr.b    SetGadget
  335. .notnow    move.l    d3,d2
  336.  
  337. SetIntGadget
  338.     move.l    #GTIN_Number,d0
  339.  
  340. ;d0 tag, d1 value d2 gadget number
  341.  
  342. SetGadget
  343.     lea    gadgets(pc),a0
  344.     add    d2,d2
  345.     add    d2,d2
  346.     add    d2,a0
  347.     move.l    (a0),a0
  348.     moveq    #0,d2
  349.     pushm    d0-d2/a1-a3/a6
  350.     move.l    win(pc),a1
  351.     sub.l    a2,a2
  352.     move.l    a7,a3
  353.     move.l    gtb(pc),a6
  354.     jsrlib    GT_SetGadgetAttrsA    ;a0 gad a1 win a2 null a3 taglist
  355.     popm    d0-d2/a1-a3/a6
  356.     rts
  357.     
  358. ;------------------------- Gadget Routines ----------------------
  359.  
  360. ;d0 code a3 gadget, a4 special info,a5 b
  361.  
  362. FreqAgdg                ;Just do the AND.L #$000ffff,d0
  363.     lea    AY_FreqA(pc),a1        ;correction. Ignore slider position.
  364.     moveq    #0,d2
  365. .in    moveq    #0,d1
  366.     move.w    si_LongInt+2(a4),d1
  367.     move.w    d1,(a1)
  368.     bra.b    SetIntGadget
  369.  
  370. FreqBgdg
  371.     lea    AY_FreqB(pc),a1
  372.     moveq    #7,d2
  373.     bra.b    FreqAgdg\.in
  374. FreqCgdg
  375.     lea    AY_FreqC(pc),a1
  376.     moveq    #14,d2
  377.     bra.b    FreqAgdg\.in
  378.  
  379. FreqAslide    lea    AY_FreqA(pc),a1
  380.     moveq    #0,d2            ;int gadget nr
  381. .in    moveq    #0,d1
  382.     subq    #1,d0
  383.     bcs.b    .zero
  384.     add.w    d0,d0
  385.     move.l    AYfreq(pc),a0
  386.     add.w    d0,a0
  387.     move.w    (a0),d1
  388. .zero    move.w    d1,(a1)
  389.     bra.b    SetIntGadget
  390. FreqBslide
  391.     lea    AY_FreqB(pc),a1
  392.     moveq    #7,d2
  393.     bra.b    FreqAslide\.in
  394. FreqCslide
  395.     lea    AY_FreqC(pc),a1
  396.     moveq    #14,d2
  397.     bra.b    FreqAslide\.in
  398.  
  399. VolAgdg    
  400.     move.l    si_LongInt(a4),d0
  401. VolAslide
  402.     moveq    #3,d2    ;slider nr
  403.     moveq    #1,d3    ;integer nr
  404.     lea    AY_VolA(pc),a1
  405. .in2    moveq    #15,d1
  406.     bsr.w    SetPair
  407.     moveq    #-16,d0
  408.     and.b    (a1),d0
  409.     or.b    d1,d0
  410.     move.b    d0,(a1)
  411.     rts
  412. VolBgdg
  413.     move.l    si_LongInt(a4),d0
  414. VolBslide
  415.     moveq    #10,d2    ;slider nr
  416.     moveq    #8,d3    ;integer nr
  417.     lea    AY_VolB(pc),a1
  418.     bra.b    VolAslide\.in2
  419. VolCgdg    
  420.     move.l    si_LongInt(a4),d0
  421. VolCslide
  422.     moveq    #17,d2    ;slider nr
  423.     moveq    #15,d3    ;integer nr
  424.     lea    AY_VolC(pc),a1
  425.     bra.b    VolAslide\.in2
  426.  
  427. ToneA    moveq    #0,d0
  428. .in    move.b    AY_Strobe(pc),d1
  429.     btst    #7,gg_Flags+1(a3)    ;GFLG_SELECTED
  430.     bne.b    .selected
  431.     bset    d0,d1
  432.     bra.b    .cont
  433. .selected
  434.     bclr    d0,d1
  435. .cont    move.b    d1,AY_Strobe-b(a5)
  436.     rts
  437. ToneB    moveq    #1,d0
  438.     bra.b    ToneA\.in
  439. ToneC    moveq    #2,d0
  440.     bra.b    ToneA\.in
  441. NoiseA    moveq    #3,d0
  442.     bra.b    ToneA\.in
  443. NoiseB    moveq    #4,d0
  444.     bra.b    ToneA\.in
  445. NoiseC    moveq    #5,d0
  446.     bra.b    ToneA\.in
  447. Noisegdg
  448.     move.l    si_LongInt(a4),d0
  449. Noiseslide
  450.     moveq    #31,d1
  451.     moveq    #22,d2    ;slider nr
  452.     moveq    #21,d3    ;integer nr
  453.     bsr.w    SetPair
  454.     move.b    d1,AY_Noise-b(a5)
  455. EnvFreqgdg
  456. EnvFreqslide
  457. EnvType
  458. EnvLoop
  459. EnvA
  460. EnvB
  461. EnvC    rts
  462.  
  463. ;------------------------- AY registers ----------------------
  464.  
  465. AY_Registers
  466. AY_FreqA    dc.w    0
  467. AY_FreqB    dc.w    0
  468. AY_FreqC    dc.w    0
  469. AY_Noise    dc.b    0
  470. AY_Strobe    dc.b    %111111
  471. AY_VolA        dc.b    0
  472. AY_VolB        dc.b    0
  473. AY_VolC        dc.b    0
  474. AY_EnvFreq    dc.b    0,0
  475. AY_EnvType    dc.b    0
  476.  
  477. ;------------------------- Definitions ----------------------
  478.  
  479.     STRUCTURE    MyGadget,0
  480.     UBYTE    MGDG_Kind
  481.     UBYTE    MGDG_Flags
  482.     UWORD    MDGD_LeftEdge
  483.     UWORD    MDGD_TopEdge
  484.     UWORD    MDGD_Height
  485.     UWORD    MDGD_Width
  486.     RPTR    MGDG_Text
  487.     RPTR    MGDG_UserData
  488.     RPTR    MGDG_Tags
  489.     LABEL    MGDG_SizeOf
  490.  
  491. ;------------------------- Macros ----------------------
  492.  
  493. gdg    macro    ;kind,flags,left,top,height,width,text,user,tags
  494.     dc.b    \1
  495.     dc.b    \2
  496.     dc.w    \3,\4,\5,\6
  497.     dc.w    \7-*
  498.     dc.w    \8-*
  499.     dc.w    \9-*
  500.     endm
  501.  
  502. ;------------------------- Gadgets ----------------------
  503.  
  504. gadnr    equ    27    ;nr of gadgets below
  505.  
  506. gadgets    dcb.l    gadnr
  507.  
  508. gtable    gdg    INTEGER_KIND,PLACETEXT_LEFT,52,3,57,13,txtFreq,FreqAgdg,TagDone
  509. g1    gdg    INTEGER_KIND,PLACETEXT_LEFT,52,19,57,13,txtVol,VolAgdg,TagDone
  510. g2    gdg    SLIDER_KIND,0,116,3,225,13,null,FreqAslide,TagFreqS
  511. g3     gdg    SLIDER_KIND,0,116,19,177,13,null,VolAslide,TagVolS
  512. g4    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,347,4,26,11,txtT,ToneA,TagDone
  513. g5    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,347,20,26,11,txtN,NoiseA,TagDone
  514. g6    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,299,20,26,11,txtE,EnvA,TagDisabled
  515. g7    gdg    INTEGER_KIND,PLACETEXT_LEFT,52,35,57,13,txtFreq,FreqBgdg,TagDone
  516. g8    gdg    INTEGER_KIND,PLACETEXT_LEFT,52,51,57,13,txtVol,VolBgdg,TagDone
  517. g9       gdg    SLIDER_KIND,0,116,35,225,13,null,FreqBslide,TagFreqS
  518. g10     gdg    SLIDER_KIND,0,116,51,177,13,null,VolBslide,TagVolS
  519. g11    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,347,36,26,11,txtT,ToneB,TagDone
  520. g12    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,347,52,26,11,txtN,NoiseB,TagDone
  521. g13    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,299,52,26,11,txtE,EnvB,TagDisabled
  522. g14    gdg    INTEGER_KIND,PLACETEXT_LEFT,52,67,57,13,txtFreq,FreqCgdg,TagDone
  523. g15    gdg    INTEGER_KIND,PLACETEXT_LEFT,52,83,57,13,txtVol,VolCgdg,TagDone
  524. g16        gdg    SLIDER_KIND,0,116,67,225,13,null,FreqCslide,TagFreqS
  525. g17      gdg    SLIDER_KIND,0,116,83,177,13,null,VolCslide,TagVolS
  526. g18    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,347,68,26,11,txtT,ToneC,TagDone
  527. g19    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,347,84,26,11,txtN,NoiseC,TagDone
  528. g20    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,299,84,26,11,txtE,EnvC,TagDisabled
  529. g21    gdg    INTEGER_KIND,PLACETEXT_LEFT,52,99,57,13,txtNoise,Noisegdg,TagDone
  530. g22      gdg    SLIDER_KIND,0,116,99,273,13,null,Noiseslide,TagNoiseS
  531. g23    gdg    INTEGER_KIND,PLACETEXT_LEFT,52,115,57,13,txtEnv,EnvFreqgdg,TagDisabled
  532. g24    gdg    SLIDER_KIND,0,116,115,273,13,null,EnvFreqslide,TagEnvFreqS
  533. g25    gdg    CYCLE_KIND,PLACETEXT_LEFT,52,131,289,13,txtEnvType,EnvType,TagEnvType
  534. g26    gdg    CHECKBOX_KIND,PLACETEXT_RIGHT,347,132,26,11,txtEnvLoop,EnvLoop,TagDisabled
  535. null       dc.b    0
  536.  
  537. ;------------------------- Some vars ----------------------
  538.  
  539. relocated    dc.b    0
  540. intb    dc.l    0
  541. gtb    dc.l    0
  542. win    dc.l    0
  543. proc    dc.l    0
  544.  
  545. NewGad    dc.w    0,0,0,0    ;sizes
  546.     dc.l    0    ;text
  547. _rel25    dc.l    TopazAtt-*    ;font
  548.     dc.w    0    ;id
  549.     dc.l    0    ;flags
  550. vi    dc.l    0    ;visualinfo
  551.     dc.l    0    ;userdata
  552.  
  553. ;------------------------- Some Static ----------------------
  554.  
  555. TopazAtt    
  556. _rel24    dc.l    topazn-*
  557.     dc.w    8,1
  558.  
  559. ;------------------------- Tags ----------------------
  560.  
  561.     even
  562.  
  563. TagFreqS
  564.     DC.L    GTSL_Max,109
  565. TagVolS
  566. TagDone    DC.L    TAG_DONE
  567.  
  568. TagNoiseS
  569.     DC.L    GTSL_Max,31
  570.     DC.l    TAG_DONE
  571.  
  572. TagEnvFreqS
  573.     DC.L    GTSL_Max,8192
  574.     DC.L    GA_Disabled,1
  575.     DC.L    TAG_DONE
  576.  
  577. TagEnvType    
  578.     DC.L    GTCY_Labels
  579. _rel21    dc.l    LabEnvType-*
  580. TagDisabled
  581.     DC.L    GA_Disabled,1
  582.     DC.L    TAG_DONE
  583.  
  584. TagWindow
  585.     DC.L    WA_Width,403
  586.     DC.L    WA_Height
  587. WindowHeight    equ    149
  588. wh    dc.l    0
  589.     DC.L    WA_IDCMP,SLIDERIDCMP!CHECKBOXIDCMP!CYCLEIDCMP!INTEGERIDCMP!IDCMP_REFRESHWINDOW
  590.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_SMART_REFRESH
  591. Project1WG:
  592.     DC.L    WA_Gadgets
  593. glist    dc.l    0    ;gadgetlist
  594.     DC.L    WA_Title
  595. _rel26    dc.l    name-*
  596.     DC.L    WA_PubScreen
  597. scr    dc.l    0    ;pub screen
  598.     DC.L    TAG_DONE
  599.  
  600. TagProc
  601.     dc.l    NP_Entry
  602. _rel27    dc.l    EntryPoint-*
  603.     dc.l    NP_Name
  604. _rel28    dc.l    name-*
  605.     dc.l    TAG_DONE
  606.  
  607. ;------------------------- Labels ----------------------
  608.  
  609. LabEnvType
  610. _rel22    dc.l    txtSquare-*
  611. _rel23    dc.l    txtSaw-*
  612.     dc.l    0
  613.  
  614. ;---------------------- reloc tables -------------------
  615.  
  616. reloc
  617.     dc.w    _rel21-*
  618.     dc.w    _rel22-*
  619.     dc.w    _rel23-*
  620.     dc.w    _rel24-*
  621.     dc.w    _rel25-*
  622.     dc.w    _rel26-*
  623.     dc.w    _rel27-*
  624.     dc.w    _rel28-*
  625.     dc.w    0
  626.  
  627. e
  628.